package sun.scheduler.gui;

/**
 * An interface for scalable graphic components. Each componant implementing this interface should
 * consider a default scale of one. And lineary adjust by the scalar factor of the new specified
 * scale, i.e. a change of scale from one to two means that all distances become twice as large.
 *
 * @author mfj
 */
public interface Scalable
{
    /**
     * Sets the horizontal scale.
     *
     * @param value a positive scale factor
     * @throws IllegalArgumentException if the factor is negative {@code value <= 0}.
     */
    public void setScaleX(double value);


    /**
     * Sets the vertical scale.
     *
     * @param value a positive scale factor
     * @throws IllegalArgumentException if the factor is negative {@code value <= 0}.
     */
    public void setScaleY(double value);


    /**
     * Gets the horizontal scale factor.
     * @return the scale factor
     */
    public double getScaleX();


    /**
     * Gets the vertical scale factor.
     * @return the scale factor
     */
    public double getScaleY();
}
